在第 17 天,我們將學習如何實現更複雜的對話邏輯。這包括多輪對話處理、條件分支邏輯、甚至是與外部 API 的整合,讓 Bot 能夠進行智能對話。
多輪對話是指一個對話有多個步驟,Bot 需要根據用戶的不同回應進行多步互動。這種邏輯常見於客服系統或調查問卷。
定義對話流程:
例子:
user_states = {}
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
user_id = event.source.user_id
user_message = event.message.text
if user_id not in user_states:
user_states[user_id] = "問候"
if user_states[user_id] == "問候":
reply_message = "你好!今天需要什麼幫助?"
user_states[user_id] = "等待回應"
elif user_states[user_id] == "等待回應":
reply_message = f"你提到的問題是:{user_message},讓我來幫你。"
user_states[user_id] = "問候"
line_bot_api.reply_message(event.reply_token, TextSendMessage(text=reply_message))
條件分支:
例子:
if "產品" in user_message:
reply_message = "你對我們的產品有什麼疑問?"
elif "客服" in user_message:
reply_message = "我們的客服團隊將很快與您聯繫。"
else:
reply_message = "抱歉,我不太明白。"
讓 Bot 更加智能的一個方法是與外部 API 整合。例如,你可以使用天氣 API、貨幣兌換 API 或是自動化的 NLP 服務來增強 Bot 的功能。
整合天氣 API:
例子:
import requests
def get_weather(city):
api_url = f"http://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q={city}"
response = requests.get(api_url)
data = response.json()
return f"{city} 的天氣是 {data['current']['condition']['text']},溫度是 {data['current']['temp_c']}°C。"
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
user_message = event.message.text
if "天氣" in user_message:
city = user_message.split("天氣")[0]
reply_message = get_weather(city)
else:
reply_message = "請問你想查詢哪個城市的天氣?"
line_bot_api.reply_message(event.reply_token, TextSendMessage(text=reply_message))
整合自然語言處理 (NLP):